// pages/login/login.js
import { toast } from '../../utils/extendApi'
//导入接口API函数
import { reqLogin } from '../../api/user'
//导入本地存储API
import { setStorage } from '../../utils/storage'
//使用Store
import { ComponentWithStore } from 'mobx-miniprogram-bindings'
//导入Store
import { userStore } from '../../store/userstore'
//获取用户数据
import { reqUserInfo } from '../../api/user'
//使用ComponentWithStore方法替换 Component方法构造页面

//导入防抖函数
import { debounce } from 'miniprogram-licia'
ComponentWithStore({
  //Store对象
  storeBindings: {
    //页面和store建立联系
    store: userStore,
    fields: ['token', 'userinfo'],
    actions: ['setToken', 'setUserInfo']
  },

  methods: {
    //授权登录
    login: debounce(function () {
      //使用wx.login获取用户临时凭证
      wx.login({
        success: async ({ code }) => {
          if (code) {
            //获取临时登录code后,需要传递给开发者服务器
            const res = await reqLogin(code)

            //存入Token
            setStorage('token', res.data.token)

            //将自定义登录态token存储到Store对象
            this.setToken(res.data.token)
            //获取用户信息
            this.getUserInfo()
            //返回上一级
            wx.navigateBack()
          } else {
            console.log(234)
            toast({ title: '授权失败,请重新授权' })
          }
        }
      })
    }, 500),
    //获取用户信息
    async getUserInfo() {
      const { data } = await reqUserInfo()
      //调用接口获取用户信息 ,将用户信息存储本地
      setStorage('userinfo', data)

      this.setUserInfo(data)
    }
  }
})
